Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Node / ReticulumProjects / MeshChatX.git / files / tests / frontend / MicronParser.test.js

Displaying Raw • Download


tests/frontend/MicronParser.test.js v4.6.0-rc.5 (a783288f) Text, 34.40 KB

Tff7b72import Tb4b4b4{ Te6edf3describeTb4b4b4, Te6edf3itTb4b4b4, Te6edf3expectTb4b4b4, Te6edf3beforeEachTb4b4b4, Te6edf3vi Tb4b4b4} Tff7b72from Ta5d6ff"vitest"Tb4b4b4;
Tff7b72import Te6edf3MicronParser Tff7b72from Ta5d6ff"@/js/MicronParser"Tb4b4b4;

Te6edf3describeTb4b4b4(Ta5d6ff"MicronParser.js"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72let Te6edf3parserTb4b4b4;

Te6edf3beforeEachTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3parser Tff7b72= Tff7b72new Te6edf3MicronParserTb4b4b4(Tff7b72trueTb4b4b4, Tff7b72falseTb4b4b4)Tb4b4b4; T8b949e// darkTheme = true, enableForceMonospace = false
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3describeTb4b4b4(Ta5d6ff"PARTIAL_LINE_REGEX"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"matches partial without refresh"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3m Tff7b72= Ta5d6ff"`{f64a846313b874ee4a357040807f8c77:/page/partial.mu}"
Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)
Tb4b4b4.Te6edf3matchTb4b4b4(Te6edf3MicronParserTb4b4b4.Te6edf3PARTIAL_LINE_REGEXTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3mTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toBeNullTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3mTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"f64a846313b874ee4a357040807f8c77"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3mTb4b4b4[T79c0ff2Tb4b4b4]Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"/page/partial.mu"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3mTb4b4b4[T79c0ff3Tb4b4b4]Tb4b4b4)Tb4b4b4.Te6edf3toBeUndefinedTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"matches partial with refresh"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3m Tff7b72= Ta5d6ff"`{f64a846313b874ee4a357040807f8c77:/page/ref.mu`30}"
Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)
Tb4b4b4.Te6edf3matchTb4b4b4(Te6edf3MicronParserTb4b4b4.Te6edf3PARTIAL_LINE_REGEXTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3mTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toBeNullTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3mTb4b4b4[T79c0ff3Tb4b4b4]Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"30"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"does not match without leading backtick"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Ta5d6ff"{f64a846313b874ee4a357040807f8c77:/page/x.mu}"Tb4b4b4.Te6edf3matchTb4b4b4(Te6edf3MicronParserTb4b4b4.Te6edf3PARTIAL_LINE_REGEXTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeNullTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"does not match short hash"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Ta5d6ff"`{f64a846313b874ee4a35704:/page/x.mu}"Tb4b4b4.Te6edf3matchTb4b4b4(Te6edf3MicronParserTb4b4b4.Te6edf3PARTIAL_LINE_REGEXTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeNullTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3describeTb4b4b4(Ta5d6ff"formatNomadnetworkUrl"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"formats nomadnetwork URL correctly"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3MicronParserTb4b4b4.Te6edf3formatNomadnetworkUrlTb4b4b4(Ta5d6ff"example.com"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"nomadnetwork://example.com"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3describeTb4b4b4(Ta5d6ff"isWideMonospaceCell"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"detects Han, kana, Hangul syllables"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3MicronParserTb4b4b4.Te6edf3isWideMonospaceCellTb4b4b4(Ta5d6ff"中"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3MicronParserTb4b4b4.Te6edf3isWideMonospaceCellTb4b4b4(Ta5d6ff"あ"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3MicronParserTb4b4b4.Te6edf3isWideMonospaceCellTb4b4b4(Ta5d6ff"ア"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3MicronParserTb4b4b4.Te6edf3isWideMonospaceCellTb4b4b4(Ta5d6ff"한"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"detects CJK punctuation and fullwidth ASCII"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3MicronParserTb4b4b4.Te6edf3isWideMonospaceCellTb4b4b4(Ta5d6ff"\u3000"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3MicronParserTb4b4b4.Te6edf3isWideMonospaceCellTb4b4b4(Ta5d6ff"\uff01"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"treats Latin as narrow"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3MicronParserTb4b4b4.Te6edf3isWideMonospaceCellTb4b4b4(Ta5d6ff"A"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3MicronParserTb4b4b4.Te6edf3isWideMonospaceCellTb4b4b4(Ta5d6ff"9"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3describeTb4b4b4(Ta5d6ff"forceMonospace wide cells"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"uses Mu-mnt-group for Latin-only words and Mu-mnt-full per grapheme for CJK"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3monoParser Tff7b72= Tff7b72new Te6edf3MicronParserTb4b4b4(Tff7b72trueTb4b4b4, Tff7b72trueTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3monoParserTb4b4b4.Te6edf3splitAtSpacesTb4b4b4(Ta5d6ff"Hi \u4e2d\u6587"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Mu-mnt-group"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"class='Mu-mnt'>H</span>"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"class='Mu-mnt-full'>\u4e2d</span>"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"class='Mu-mnt-full'>\u6587</span>"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"uses Mu-mnt-group for Cyrillic without per-character Mu-mnt spans"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3monoParser Tff7b72= Tff7b72new Te6edf3MicronParserTb4b4b4(Tff7b72trueTb4b4b4, Tff7b72trueTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3monoParserTb4b4b4.Te6edf3forceMonospaceTb4b4b4(Ta5d6ff"\u041f\u0440\u0438\u0432\u0435\u0442"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Mu-mnt-group"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"\u041f\u0440\u0438\u0432\u0435\u0442"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/class='Mu-mnt'>/Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3describeTb4b4b4(Ta5d6ff"convertMicronToHtml"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"converts simple text to HTML"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"Hello World"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Hello World"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"<div"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"converts headings correctly"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"> Heading 1\n>> Heading 2"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Heading 1"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Heading 2"Tb4b4b4)Tb4b4b4;
T8b949e// Check for styles applied to headings (in dark theme)
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"background-color: rgb(187, 187, 187)"Tb4b4b4)Tb4b4b4; T8b949e// #bbb
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"background-color: rgb(153, 153, 153)"Tb4b4b4)Tb4b4b4; T8b949e// #999
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"handles bare headings without adding extra lines"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
T8b949e// Bare headings are headings without content after them on the same line
T8b949e// They should not insert extra blank lines
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff`Ta5d6ff>Anonymous Git Node

Ta5d6ff\`Ta5d6ff[NodeTa5d6ff\`Ta5d6ff:/page/index.mu] / Ta5d6ff\`Ta5d6ff[publicTa5d6ff\`Ta5d6ff:/page/group.muTa5d6ff\`Ta5d6ffg=public] / LXMF

LXMF - Ta5d6ff\`Ta5d6ff*A simple messaging formatTa5d6ff\`Ta5d6ff*

Ta5d6ff\`Ta5d6ff[FilesTa5d6ff\`Ta5d6ff:/page/tree.mu] Ta5d6ff\`Ta5d6ff[CommitsTa5d6ff\`Ta5d6ff:/page/commits.mu]Ta5d6ff`Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;

T8b949e// All content should be present
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Anonymous Git Node"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Node"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"public"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"LXMF"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"A simple messaging format"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Files"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Commits"Tb4b4b4)Tb4b4b4;

T8b949e// Verify no consecutive <br><br> patterns that would indicate extra lines
T8b949e// from bare headings (normalize HTML first)
Tff7b72const Te6edf3normalized Tff7b72= Te6edf3htmlTb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff/>\s+</gTb4b4b4, Ta5d6ff"><"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3normalizedTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"<br><br><br>"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"handles nested bare headings with section indents"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
T8b949e// Multiple nested bare headings should apply section indentation correctly
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff`Ta5d6ff>Section A
Content at depth 3

Section B
Content at depth 1Ta5d6ff`Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;

Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Section A"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Section B"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Content at depth 3"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Content at depth 1"Tb4b4b4)Tb4b4b4;

T8b949e// Check for section indentation via inline margin styles (2.4em = 2 levels * 1.2em per level)
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"margin-left: 2.4em"Tb4b4b4)Tb4b4b4;
T8b949e// Content after Section B should be at depth 1 (1.2em margin)
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"margin-left: 1.2em"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"converts horizontal dividers"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"-"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"<hr"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"handles bold formatting"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`!Bold Text`!"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"font-weight: bold"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Bold Text"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"handles italic formatting"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`*Italic Text`*"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"font-style: italic"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Italic Text"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"handles underline formatting"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`_Underlined Text`_"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"text-decoration: underline"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Underlined Text"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"handles combined formatting"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`!`_Bold Underlined Text`_`!"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"font-weight: bold"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"text-decoration: underline"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Bold Underlined Text"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3describeTb4b4b4(Ta5d6ff"foreground color"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"handles 3-char F format"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`FabcRed Text`"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"rgb(170, 187, 204)"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Red Text"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"handles NomadNet 0.9.9 truecolor `FT (6 hex) for foreground"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`FTff0000Red text`"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/#ff0000|rgb\(255,\s*0,\s*0\)/Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Red text"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3describeTb4b4b4(Ta5d6ff"background color"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"handles 3-char B format"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`BfffYellow BG`"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"rgb(255, 255, 255)"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Yellow BG"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"handles NomadNet 0.9.9 truecolor `BT (6 hex) for background"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`BT00ff00On green`"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/#00ff00|rgb\(0,\s*255,\s*0\)/Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"On green"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"handles literal mode"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`=\n`*Not Italic`*\n`="Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"font-style: italic"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"`*Not Italic`*"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"handles links correctly"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`[Label`example.com]"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"<a"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'href="nomadnetwork://example.com"'Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Label"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"handles input fields"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`<24|field_name`Initial Value>"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"<input"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'name="field_name"'Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'value="Initial Value"'Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"handles checkboxes"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`<?|checkbox_name|val|*`Checkbox Label>"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'type="checkbox"'Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'name="checkbox_name"'Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'value="val"'Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Checkbox Label"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3describeTb4b4b4(Ta5d6ff"partials"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"emits placeholder for partial line without refresh"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3dest Tff7b72= Ta5d6ff"f64a846313b874ee4a357040807f8c77"Tb4b4b4;
Tff7b72const Te6edf3path Tff7b72= Ta5d6ff"/page/partial_1.mu"Tb4b4b4;
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`{" Tff7b72+ Te6edf3dest Tff7b72+ Ta5d6ff":" Tff7b72+ Te6edf3path Tff7b72+ Ta5d6ff"}"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'class="mu-partial"'Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'data-partial-id="partial-0"'Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'data-dest="' Tff7b72+ Te6edf3dest Tff7b72+ Ta5d6ff'"'Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'data-path="' Tff7b72+ Te6edf3path Tff7b72+ Ta5d6ff'"'Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"data-refresh"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Loading..."Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"emits placeholder for partial line with refresh seconds"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3dest Tff7b72= Ta5d6ff"f64a846313b874ee4a357040807f8c77"Tb4b4b4;
Tff7b72const Te6edf3path Tff7b72= Ta5d6ff"/page/refreshing_partial.mu"Tb4b4b4;
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`{" Tff7b72+ Te6edf3dest Tff7b72+ Ta5d6ff":" Tff7b72+ Te6edf3path Tff7b72+ Ta5d6ff"`10}"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'class="mu-partial"'Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'data-partial-id="partial-0"'Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'data-dest="' Tff7b72+ Te6edf3dest Tff7b72+ Ta5d6ff'"'Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'data-path="' Tff7b72+ Te6edf3path Tff7b72+ Ta5d6ff'"'Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'data-refresh="10"'Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Loading..."Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"injects partialContents when provided"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3dest Tff7b72= Ta5d6ff"a"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff32Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3path Tff7b72= Ta5d6ff"/page/partial.mu"Tb4b4b4;
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`{" Tff7b72+ Te6edf3dest Tff7b72+ Ta5d6ff":" Tff7b72+ Te6edf3path Tff7b72+ Ta5d6ff"}"Tb4b4b4;
Tff7b72const Te6edf3injected Tff7b72= Ta5d6ff"<span>Injected partial content</span>"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4, Tb4b4b4{ Ta5d6ff"partial-0"Tff7b72: Te6edf3injected Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Te6edf3injectedTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Loading..."Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"mu-partial"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"assigns unique partial ids for multiple partials"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3dest Tff7b72= Ta5d6ff"b"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff32Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`{" Tff7b72+ Te6edf3dest Tff7b72+ Ta5d6ff":/page/a.mu}\n`{" Tff7b72+ Te6edf3dest Tff7b72+ Ta5d6ff":/page/b.mu}"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'data-partial-id="partial-0"'Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'data-partial-id="partial-1"'Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'data-path="/page/a.mu"'Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'data-path="/page/b.mu"'Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"does not interpret partial syntax inside literal block"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3dest Tff7b72= Ta5d6ff"c"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff32Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`=\n`{" Tff7b72+ Te6edf3dest Tff7b72+ Ta5d6ff":/page/partial.mu}\n`="Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"mu-partial"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"`{" Tff7b72+ Te6edf3dest Tff7b72+ Ta5d6ff":/page/partial.mu}"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"does not treat similar-looking line as partial without backtick"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"{f64a846313b874ee4a357040807f8c77:/page/partial.mu}"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"mu-partial"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3describeTb4b4b4(Ta5d6ff"colorToCss"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"expands 3-digit hex"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3parserTb4b4b4.Te6edf3colorToCssTb4b4b4(Ta5d6ff"abc"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"#abc"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"returns 6-digit hex"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3parserTb4b4b4.Te6edf3colorToCssTb4b4b4(Ta5d6ff"abcdef"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"#abcdef"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"handles grayscale format"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3parserTb4b4b4.Te6edf3colorToCssTb4b4b4(Ta5d6ff"g50"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"#7f7f7f"Tb4b4b4)Tb4b4b4; T8b949e// 50 * 2.55 = 127.5 -> 7f
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"returns null for unknown formats"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3parserTb4b4b4.Te6edf3colorToCssTb4b4b4(Ta5d6ff"invalid"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeNullTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3describeTb4b4b4(Ta5d6ff"risky: XSS and injection"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"output contains no raw script tag for script-like markup"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"<script>alert(1)</script> hello"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/<script[\s>]/iTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"output contains no javascript: in href for link-like markup"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`[click`javascript:alert(1)]"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/\bhref\s*=\s*["']?\s*javascript:/iTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"output contains no data: html in href"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`[x`data:text/html,<script>alert(1)</script>]"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/\bhref\s*=\s*["']?\s*data\s*:\s*text\/html/iTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"does not produce executable event handler attributes"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff'<span onclick="alert(1)">x</span>'Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/<[^>]*\bonclick\s*=\s*["']?\s*alert/iTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3describeTb4b4b4(Ta5d6ff"risky: stability and edge input"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"does not throw on null or undefined markup"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Tff7b72nullTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toThrowTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Tff7b72undefinedTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toThrowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"handles very long input without hanging"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Tff7b72long Tff7b72= Ta5d6ff"> "Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff5000Tb4b4b4) Tff7b72+ Ta5d6ff"x"Tb4b4b4;
Tff7b72const Te6edf3start Tff7b72= Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Tff7b72longTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4) Tff7b72- Te6edf3startTb4b4b4)Tb4b4b4.Te6edf3toBeLessThanTb4b4b4(T79c0ff500Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tff7b72typeof Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"string"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"handles repeated backticks (ReDoS-prone pattern) quickly"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff3000Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3start Tff7b72= Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4) Tff7b72- Te6edf3startTb4b4b4)Tb4b4b4.Te6edf3toBeLessThanTb4b4b4(T79c0ff200Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"handles control chars and null byte"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"hello\x00world\x07\n\t"Tb4b4b4;
Te6edf3expectTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toThrowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tff7b72typeof Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"string"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"handles unicode and RTL override"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"\u202eRTL `!bold`! text \ufffd"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tff7b72typeof Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"string"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/<script[\s>]/iTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3describeTb4b4b4(Ta5d6ff"adversarial: deeply nested tags"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"handles 500 levels of nested bold without stack overflow"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3open Tff7b72= Ta5d6ff"`!"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff500Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3close Tff7b72= Ta5d6ff"`!"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff500Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3markup Tff7b72= Te6edf3open Tff7b72+ Ta5d6ff"deep" Tff7b72+ Te6edf3closeTb4b4b4;
Te6edf3expectTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toThrowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tff7b72typeof Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"string"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"deep"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"handles 500 levels of mixed nesting (bold+italic+underline)"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3tags Tff7b72= Tb4b4b4[Ta5d6ff"`!"Tb4b4b4, Ta5d6ff"`*"Tb4b4b4, Ta5d6ff"`_"Tb4b4b4]Tb4b4b4;
Tff7b72let Te6edf3markup Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72let Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< T79c0ff500Tb4b4b4; Te6edf3iTff7b72++Tb4b4b4) Te6edf3markup Tff7b72+= Te6edf3tagsTb4b4b4[Te6edf3i Tff7b72% T79c0ff3Tb4b4b4]Tb4b4b4;
Te6edf3markup Tff7b72+= Ta5d6ff"payload"Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72let Te6edf3i Tff7b72= T79c0ff499Tb4b4b4; Te6edf3i Tff7b72>= T79c0ff0Tb4b4b4; Te6edf3iTff7b72--Tb4b4b4) Te6edf3markup Tff7b72+= Te6edf3tagsTb4b4b4[Te6edf3i Tff7b72% T79c0ff3Tb4b4b4]Tb4b4b4;
Te6edf3expectTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toThrowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"payload"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"handles deeply nested headings"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Tffa657ArrayTb4b4b4.Tff7b72fromTb4b4b4(Tb4b4b4{ Te6edf3lengthTff7b72: T79c0ff200 Tb4b4b4}Tb4b4b4, Tb4b4b4(Te6edf3_Tb4b4b4, Te6edf3iTb4b4b4) Tb4b4b4=> Ta5d6ff">"Tb4b4b4.Te6edf3repeatTb4b4b4(Te6edf3i Tff7b72+ T79c0ff1Tb4b4b4) Tff7b72+ Ta5d6ff" H"Tb4b4b4)Tb4b4b4.Te6edf3joinTb4b4b4(Ta5d6ff"\n"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toThrowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3describeTb4b4b4(Ta5d6ff"adversarial: unclosed and mismatched tags"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"handles unclosed bold tag"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`!unclosed bold without end"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tff7b72typeof Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"string"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/<script[\s>]/iTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"handles unclosed italic tag"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`*unclosed italic"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tff7b72typeof Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"string"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"handles mismatched open/close order"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`!`*bold-italic`!`*"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tff7b72typeof Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"string"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"handles unclosed link"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`[link text without closing"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tff7b72typeof Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"string"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/\bhref\s*=\s*["']?\s*javascript:/iTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"handles unclosed input"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`<24|field_name`value without closing"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tff7b72typeof Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"string"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"handles unclosed literal mode"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`=\nsome literal text that never closes"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tff7b72typeof Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"string"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3describeTb4b4b4(Ta5d6ff"adversarial: malformed UTF-8 and encoding attacks"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"handles UTF-8 overlong encoding sequences"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"test\xC0\xAFpath\xE0\x80\xAFmore"Tb4b4b4;
Te6edf3expectTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toThrowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"handles surrogate halves"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"text\uD800alone\uDC00orphan"Tb4b4b4;
Te6edf3expectTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toThrowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"handles BOM characters"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"\uFEFF> Heading with BOM"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tff7b72typeof Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"string"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"handles zero-width joiner/non-joiner"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`!\u200Bbold\u200Dtext`!"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tff7b72typeof Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"string"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"handles full-width characters in tag positions"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"\uFF40\uFF01fullwidth backtick-bang\uFF40\uFF01"Tb4b4b4;
Te6edf3expectTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toThrowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3describeTb4b4b4(Ta5d6ff"adversarial: null bytes and control characters"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"handles null bytes between tag markers"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`\x00!bold\x00`!"Tb4b4b4;
Te6edf3expectTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toThrowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"handles line of only null bytes"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"\x00"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toThrowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"handles ASCII control characters 0x01-0x1F"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72let Te6edf3markup Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72let Te6edf3i Tff7b72= T79c0ff1Tb4b4b4; Te6edf3i Tff7b72< T79c0ff32Tb4b4b4; Te6edf3iTff7b72++Tb4b4b4) Te6edf3markup Tff7b72+= Tffa657StringTb4b4b4.Te6edf3fromCharCodeTb4b4b4(Te6edf3iTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toThrowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/<script[\s>]/iTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"handles escape sequences in links"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`[label`\x1B[31mred\x1B[0m]"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tff7b72typeof Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"string"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"handles DEL character (0x7F)"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"hello\x7Fworld"Tb4b4b4;
Te6edf3expectTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toThrowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3describeTb4b4b4(Ta5d6ff"adversarial: ReDoS patterns"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"handles alternating backtick-bracket pattern quickly"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`["Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff1000Tb4b4b4) Tff7b72+ Ta5d6ff"x" Tff7b72+ Ta5d6ff"]"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff1000Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3start Tff7b72= Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4) Tff7b72- Te6edf3startTb4b4b4)Tb4b4b4.Te6edf3toBeLessThanTb4b4b4(T79c0ff500Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"handles alternating backtick-angle pattern quickly"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`<"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff1000Tb4b4b4) Tff7b72+ Ta5d6ff"y" Tff7b72+ Ta5d6ff">"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff1000Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3start Tff7b72= Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4) Tff7b72- Te6edf3startTb4b4b4)Tb4b4b4.Te6edf3toBeLessThanTb4b4b4(T79c0ff500Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"handles pathological color code pattern quickly"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`Fabc"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff500Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3start Tff7b72= Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4) Tff7b72- Te6edf3startTb4b4b4)Tb4b4b4.Te6edf3toBeLessThanTb4b4b4(T79c0ff500Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"handles massive number of newlines quickly"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"\n"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff10000Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3start Tff7b72= Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4) Tff7b72- Te6edf3startTb4b4b4)Tb4b4b4.Te6edf3toBeLessThanTb4b4b4(T79c0ff2500Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"handles rapid format toggle (open/close/open/close) quickly"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`!x`!"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff2000Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3start Tff7b72= Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4) Tff7b72- Te6edf3startTb4b4b4)Tb4b4b4.Te6edf3toBeLessThanTb4b4b4(T79c0ff1500Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3describeTb4b4b4(Ta5d6ff"adversarial: XSS bypass attempts"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"blocks SVG onload XSS"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff'<svg onload="alert(1)">'Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3div Tff7b72= Tffa657documentTb4b4b4.Te6edf3createElementTb4b4b4(Ta5d6ff"div"Tb4b4b4)Tb4b4b4;
Te6edf3divTb4b4b4.Te6edf3innerHTML Tff7b72= Te6edf3htmlTb4b4b4;
Tff7b72const Te6edf3svgs Tff7b72= Te6edf3divTb4b4b4.Te6edf3querySelectorAllTb4b4b4(Ta5d6ff"svg"Tb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3svg Tff7b72of Te6edf3svgsTb4b4b4) Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3svgTb4b4b4.Te6edf3getAttributeTb4b4b4(Ta5d6ff"onload"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeNullTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"blocks img onerror XSS"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff'<img src=x onerror="alert(1)">'Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3div Tff7b72= Tffa657documentTb4b4b4.Te6edf3createElementTb4b4b4(Ta5d6ff"div"Tb4b4b4)Tb4b4b4;
Te6edf3divTb4b4b4.Te6edf3innerHTML Tff7b72= Te6edf3htmlTb4b4b4;
Tff7b72const Te6edf3imgs Tff7b72= Te6edf3divTb4b4b4.Te6edf3querySelectorAllTb4b4b4(Ta5d6ff"img"Tb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3img Tff7b72of Te6edf3imgsTb4b4b4) Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3imgTb4b4b4.Te6edf3getAttributeTb4b4b4(Ta5d6ff"onerror"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeNullTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"blocks iframe injection"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff'<iframe src="https://evil.com"></iframe>'Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/<iframe[\s>]/iTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"blocks style-based data exfiltration"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff'<style>body{background:url("https://evil.com/steal")}</style>'Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/<style[\s>]/iTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"blocks javascript: in link with encoding"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`[click`java\tscript:alert(1)]"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/\bhref\s*=\s*["']?\s*java\s*script:/iTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"blocks vbscript: protocol"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`[click`vbscript:MsgBox(1)]"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/\bhref\s*=\s*["']?\s*vbscript:/iTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"blocks meta refresh injection"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff'<meta http-equiv="refresh" content="0;url=https://evil.com">'Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/<meta[\s>]/iTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"blocks object/embed tags"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff'<object data="evil.swf"></object><embed src="evil.swf">'Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/<object[\s>]/iTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/<embed[\s>]/iTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"blocks form action injection"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff'<form action="https://evil.com"><input type="submit"></form>'Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/<form[\s>]/iTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"blocks base tag hijacking"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff'<base href="https://evil.com/">'Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/<base[\s>]/iTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3describeTb4b4b4(Ta5d6ff"adversarial: injection through micron features"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"link URL with attribute injection is entity-encoded"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff'`[click`" onclick="alert(1)" data-x="]'Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3div Tff7b72= Tffa657documentTb4b4b4.Te6edf3createElementTb4b4b4(Ta5d6ff"div"Tb4b4b4)Tb4b4b4;
Te6edf3divTb4b4b4.Te6edf3innerHTML Tff7b72= Te6edf3htmlTb4b4b4;
Tff7b72const Te6edf3anchors Tff7b72= Te6edf3divTb4b4b4.Te6edf3querySelectorAllTb4b4b4(Ta5d6ff"a"Tb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3a Tff7b72of Te6edf3anchorsTb4b4b4) Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3aTb4b4b4.Te6edf3getAttributeTb4b4b4(Ta5d6ff"onclick"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeNullTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"input field name cannot inject HTML"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff'`<24|"><script>alert(1)</script>`val>'Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/<script[\s>]/iTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"checkbox value with attribute injection is entity-encoded"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff'`<?|name|"><img src=x onerror=alert(1)>|`label>'Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3div Tff7b72= Tffa657documentTb4b4b4.Te6edf3createElementTb4b4b4(Ta5d6ff"div"Tb4b4b4)Tb4b4b4;
Te6edf3divTb4b4b4.Te6edf3innerHTML Tff7b72= Te6edf3htmlTb4b4b4;
Tff7b72const Te6edf3imgs Tff7b72= Te6edf3divTb4b4b4.Te6edf3querySelectorAllTb4b4b4(Ta5d6ff"img"Tb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3img Tff7b72of Te6edf3imgsTb4b4b4) Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3imgTb4b4b4.Te6edf3getAttributeTb4b4b4(Ta5d6ff"onerror"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeNullTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"color code cannot inject styles or HTML"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff'`F"><script>alert(1)</script>text'Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/<script[\s>]/iTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"partial hash cannot inject HTML"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3hash Tff7b72= Ta5d6ff'a"><script>alert(1)</script>'Tb4b4b4;
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`{" Tff7b72+ Te6edf3hash Tff7b72+ Ta5d6ff":/page/test.mu}"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/<script[\s>]/iTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3describeTb4b4b4(Ta5d6ff"adversarial: large and extreme payloads"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"handles 100KB of plain text"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"A"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff100Te6edf3_000Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3start Tff7b72= Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4) Tff7b72- Te6edf3startTb4b4b4)Tb4b4b4.Te6edf3toBeLessThanTb4b4b4(T79c0ff2000Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tff7b72typeof Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"string"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"handles 10K lines of formatted text"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3lines Tff7b72= Tffa657ArrayTb4b4b4.Tff7b72fromTb4b4b4(Tb4b4b4{ Te6edf3lengthTff7b72: T79c0ff10Te6edf3_000 Tb4b4b4}Tb4b4b4, Tb4b4b4(Te6edf3_Tb4b4b4, Te6edf3iTb4b4b4) Tb4b4b4=> Ta5d6ff`Ta5d6ff\`Ta5d6ff!line Tffd700${Te6edf3iTffd700}Ta5d6ff\`Ta5d6ff!Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3markup Tff7b72= Te6edf3linesTb4b4b4.Te6edf3joinTb4b4b4(Ta5d6ff"\n"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3start Tff7b72= Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4) Tff7b72- Te6edf3startTb4b4b4)Tb4b4b4.Te6edf3toBeLessThanTb4b4b4(T79c0ff15000Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4, T79c0ff15000Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"handles single line of 50KB"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`!" Tff7b72+ Ta5d6ff"X"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff50Te6edf3_000Tb4b4b4) Tff7b72+ Ta5d6ff"`!"Tb4b4b4;
Te6edf3expectTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toThrowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"handles empty string"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Ta5d6ff""Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tff7b72typeof Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"string"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"handles only whitespace"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Ta5d6ff" \t\t\n\n "Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tff7b72typeof Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"string"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3describeTb4b4b4(Ta5d6ff"adversarial: polyglot and mixed content"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"handles HTML/micron polyglot"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"> `!<b>Heading</b>`!\n<script>alert(1)</script>\n`[link`http://safe.com]"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/<script[\s>]/iTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Heading"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"handles markdown-like input"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"# Not a heading\n**not bold**\n[not a link](http://evil.com)"Tb4b4b4;
Te6edf3expectTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toThrowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"handles ANSI escape codes"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"\x1B[31mred text\x1B[0m normal"Tb4b4b4;
Te6edf3expectTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toThrowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"handles mixed valid/invalid UTF-8 with micron"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`!\uFFFD\uFFFE\uFFFF bold\uD83D\uDE00`!"Tb4b4b4;
Te6edf3expectTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toThrowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3describeTb4b4b4(Ta5d6ff"resilience: parse failures"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"renders other lines when parseLine throws for one line"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3spy Tff7b72= Te6edf3viTb4b4b4.Te6edf3spyOnTb4b4b4(Te6edf3parserTb4b4b4, Ta5d6ff"parseLine"Tb4b4b4)Tb4b4b4.Te6edf3mockImplementationTb4b4b4(Tff7b72function Tb4b4b4(Te6edf3lineTb4b4b4, Te6edf3stateTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3line Tff7b72=== Ta5d6ff"BAD"Tb4b4b4) Tb4b4b4{
Tff7b72throw Tff7b72new Tf85149ErrorTb4b4b4(Ta5d6ff"forced parse failure"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3MicronParserTb4b4b4.Te6edf3prototypeTb4b4b4.Te6edf3parseLineTb4b4b4.Te6edf3callTb4b4b4(Tff7b72thisTb4b4b4, Te6edf3lineTb4b4b4, Te6edf3stateTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Ta5d6ff"good line\nBAD\nanother"Tb4b4b4)Tb4b4b4;
Te6edf3spyTb4b4b4.Te6edf3mockRestoreTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"good line"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"mu-line-parse-fallback"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"BAD"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"another"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"convertMicronToFragment returns a fragment when parseLine throws"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3spy Tff7b72= Te6edf3viTb4b4b4.Te6edf3spyOnTb4b4b4(Te6edf3parserTb4b4b4, Ta5d6ff"parseLine"Tb4b4b4)Tb4b4b4.Te6edf3mockImplementationTb4b4b4(Tff7b72function Tb4b4b4(Te6edf3lineTb4b4b4, Te6edf3stateTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3line Tff7b72=== Ta5d6ff"BAD"Tb4b4b4) Tb4b4b4{
Tff7b72throw Tff7b72new Tf85149ErrorTb4b4b4(Ta5d6ff"forced"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3MicronParserTb4b4b4.Te6edf3prototypeTb4b4b4.Te6edf3parseLineTb4b4b4.Te6edf3callTb4b4b4(Tff7b72thisTb4b4b4, Te6edf3lineTb4b4b4, Te6edf3stateTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3frag Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToFragmentTb4b4b4(Ta5d6ff"ok\nBAD\nok2"Tb4b4b4)Tb4b4b4;
Te6edf3spyTb4b4b4.Te6edf3mockRestoreTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3fragTb4b4b4.Te6edf3childNodesTb4b4b4.Te6edf3lengthTb4b4b4)Tb4b4b4.Te6edf3toBeGreaterThanTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3describeTb4b4b4(Ta5d6ff"micron-parser-go WASM integration helpers"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3afterEachTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72delete Tffa657globalThisTb4b4b4.Te6edf3micronConvertTb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"splitMicronMarkupWasmSegments isolates MeshChat partial lines"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3dest Tff7b72= Ta5d6ff"a"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff32Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3partialLine Tff7b72= Ta5d6ff`Ta5d6ff\`Ta5d6ff{Tffd700${Te6edf3destTffd700}Ta5d6ff:/page/partial.mu}Ta5d6ff`Tb4b4b4;
Tff7b72const Te6edf3segments Tff7b72= Te6edf3MicronParserTb4b4b4.Te6edf3splitMicronMarkupWasmSegmentsTb4b4b4(Ta5d6ff`Ta5d6ff> helloTa5d6ff\nTa5d6ffworldTa5d6ff\nTffd700${Te6edf3partialLineTffd700}Ta5d6ff\nTa5d6fftrailerTa5d6ff`Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3segmentsTb4b4b4)Tb4b4b4.Te6edf3toEqualTb4b4b4(Tb4b4b4[
Tb4b4b4{ Te6edf3typeTff7b72: Ta5d6ff"mu"Tb4b4b4, Te6edf3textTff7b72: Ta5d6ff"> hello\nworld" Tb4b4b4}Tb4b4b4,
Tb4b4b4{ Te6edf3typeTff7b72: Ta5d6ff"partial"Tb4b4b4, Te6edf3lineTff7b72: Te6edf3partialLine Tb4b4b4}Tb4b4b4,
Tb4b4b4{ Te6edf3typeTff7b72: Ta5d6ff"mu"Tb4b4b4, Te6edf3textTff7b72: Ta5d6ff"trailer" Tb4b4b4}Tb4b4b4,
Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"convertMicronToHtml falls back to JS when WASM throws"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tffa657globalThisTb4b4b4.Te6edf3micronConvert Tff7b72= Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72throw Tff7b72new Tf85149ErrorTb4b4b4(Ta5d6ff"forced wasm failure"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3p Tff7b72= Tff7b72new Te6edf3MicronParserTb4b4b4(Tff7b72trueTb4b4b4, Tff7b72falseTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3pTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Ta5d6ff"`!ok`!"Tb4b4b4, Tb4b4b4{Tb4b4b4}Tb4b4b4, Tb4b4b4{ Te6edf3useWasmTff7b72: Tff7b72true Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4.Te6edf3lengthTb4b4b4)Tb4b4b4.Te6edf3toBeGreaterThanTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"ok"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"convertMicronToHtml stitches WASM segments with JS partial lines"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tffa657globalThisTb4b4b4.Te6edf3micronConvert Tff7b72= Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Ta5d6ff'<p data-wasm="1">wasm-body</p>'Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3dest Tff7b72= Ta5d6ff"b"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff32Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3partialLine Tff7b72= Ta5d6ff`Ta5d6ff\`Ta5d6ff{Tffd700${Te6edf3destTffd700}Ta5d6ff:/page/inc.mu}Ta5d6ff`Tb4b4b4;
Tff7b72const Te6edf3p Tff7b72= Tff7b72new Te6edf3MicronParserTb4b4b4(Tff7b72trueTb4b4b4, Tff7b72falseTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3pTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Ta5d6ff`Ta5d6ffintro lineTa5d6ff\nTffd700${Te6edf3partialLineTffd700}Ta5d6ff`Tb4b4b4, Tb4b4b4{Tb4b4b4}Tb4b4b4, Tb4b4b4{ Te6edf3useWasmTff7b72: Tff7b72true Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tffa657globalThisTb4b4b4.Te6edf3micronConvertTb4b4b4)Tb4b4b4.Te6edf3toHaveBeenCalledTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"wasm-body"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"mu-partial"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"data-dest"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────